Color management system that enables dynamic balancing of performance with flexibility

ABSTRACT

A method and system for allowing a computer system platform the ability to intervene in the content workflow and perform additional color management based upon the content state and any color management policies in place is provided. Profile data from a source is converted to an intermediate color space upon entry into the platform at a choke point. In response to the current color content, profile data, and/or policy controls of the platform, color management input can be managed to change color management data immediately, change color management data at a later point, and/or ignore color management data.

PRIORITY CLAIM

This application is a divisional of and claims priority to U.S.application Ser. No. 10/683,153 filed Oct. 14, 2003, the disclosure ofwhich is incorporated by reference herein in its entirety.

BACKGROUND

Proper and accurate color management has become an increasing issue.When computers, monitors and printers were first developed for home use,consumers were satisfied that green grass, blue skies, and red shirtslooked close to what they expected. As time has passed, manufacturers ofmonitor equipment, printers, digital cameras, etc. have quickly adaptedto the need to get clearer, more accurate color representations producedand/or captured. Companies have developed multimedia andgraphics-related application programs as well. Different applicationprograms for performing different types of color object data conversioncan operate on one computer platform at the same time.

With the boom of Internet-related business increasing daily, companiesare eager to ensure that products and information are being accuratelyrepresented. Clothing manufacturers distribute millions of catalogs ayear. Year after year, hundreds of millions of dollars are spent onclothes by consumers who never actually see the end product in personuntil it arrives at their door. However, the number one reason forproduct return has consistently been the fact that the color shown inthe picture, whether in a magazine, on a billboard, on the Internet, orin a catalog did not match the color of the end product when it wasreceived. A company that advertises in a magazine, has a billboard in adowntown city erected, and advertises on television wants to ensure thatits company logo is consistent throughout each medium and that eachmedium portrays an accurate representation of the intended colors.Problems of inadequate continuity in the color management process canlead to millions of lost dollars for companies and consumers alike.

In the medical industry, surgeons and other doctors perform highlydelicate and sensitive activities and rely on cameras and monitoringequipment. Today, surgeons perform certain types of procedures basedupon the displayed color of objects on the monitor, such as blood,tissue, etc. However, because there is no calibration between the cameraand monitor, important data is lost. All calibration of hardware isperformed at the factory. For example, the camera may be able to capturethe exact color of objects, such as blood, while phosphors in monitorscannot display the rich dark colors of blood. Surgeons have to performcolor calculations in their head, similar to manual adjustments thatpress operators have to perform on the fly. Even so, if all color objectdata is converted to a standard color space as in some systems, monitorsthat can display the same gamut as the camera still cannot recapturelost data in the standard color space.

Current computer platforms, such as the Linux® X11 and Microsoft®Windows® XP, allow multiple applications to access hardware for colormanagement purposes. For example, Microsoft® Windows® XP permits twelve(12) different applications to communicate with to hardware elements. Anapplication communicates with a graphics library of the platform, thegraphics library communicates with hardware coupled to the platform, andthe hardware implements the desired application operation. For each ofthe different types of platforms, the three systems, application,graphics library, and hardware, have been improved in parallel. However,these parallel solutions have not been coordinated to ensure a specifiedand/or desired color management schema for any application. The variousmethods for communicating with hardware elements produce instability andeliminate the possibility for non-intervention of a particularapplication.

Prior color management systems support a single profile-based colormanagement solution in sequence that forces conversions into thatsolution, e.g., ColorSync® by Apple®, and ICM® by Microsoft®. Thesesolutions delay the performance intensive color conversion from sourceto destination device until the last possible opportunity in order toenable the most flexibility in their platform. This is commonly referredto as a late-binding workflow strategy. In the case of a printer thathas built in hardware to accommodate in-device color management, a userwould prefer to delay the conversion to let the printer perform all thegrunt work. Disadvantages of a late-binding workflow strategy includethe fact that a single incorrect application setting can corrupt one ormore elements in the job and that evaluation of final output data doesnot occur until the last moment.

Other solutions support a single standard color space, into which allinput content is converted at the first opportunity in order to maximizeperformance. This is commonly referred to as an early-binding workflowstrategy. In the case of a standard inkjet printer, a user would preferto have the application perform all or the majority of color managementin order to minimize bandwidth use and processing time. Disadvantages ofan early-binding workflow strategy include that fact that early bindingmeans larger files that lead to slower performance, poorer qualityeffects, and that all color is squeezed into the output gamut andoptimized for the output's total response.

SUMMARY

There is therefore a need for a color management architecture thatallows for color management procedures to be implemented immediatelyupon entry to a platform, deferred to a destination device, or anywherein between the two. An aspect of the described embodiments provides anarchitecture that allows a user to monitor, investigate, intervene,manage, and/or correct what color management is being performed, wherethe color management is being performed in the workflow, and by whom thecolor management is being performed. All input color object data is sentthrough a choke point for a specific operation. All pixels go throughone single function, the choke point. Choke points are established formultiple types of operations, including print, display, capture, load,and save operations.

Another aspect of the described embodiments provides for a colormanagement system that converts all color object data received through achoke point to an intermediate color space. Conversion to anintermediate color space through a single contact point allows a user tomanage color object data in any desired manner. A user can mix userspecific color management input from standard color spaces, ICCprofiles, and non-ICC profiles. Application programs can also be used tomix color management input. Policies can be established or predefined tocoordinate all color management. The policies can coordinate operationfor different users, different operations, different types of devices,different devices, different manufacturers, different models, anddifferent calibrations.

Another aspect of the described embodiments provides for dynamic colorgamut mapping in hardware cards and printers. Hardware cards andprinters are configured to accommodate changing color conversionsinitiated by a user, by an application program, or by a policy.

BRIEF DESCRIPTION OF THE DRAWINGS

The foregoing summary of the described embodiments, as well as thefollowing detailed description of illustrative embodiments, is betterunderstood when read in conjunction with the accompanying drawings,which are included by way of example, and not by way of limitation withregard to the claimed embodiments.

FIG. 1 is a block diagram of a color management solution including adigital camera, host computer, and printer;

FIG. 2 is a schematic diagram of a computer graphics processing systemcoupled to various devices;

FIG. 3 illustrates a schematic diagram of a general-purpose digitalcomputing environment in which certain aspects of the describedembodiments may be implemented;

FIG. 4 illustrates a schematic diagram of an illustrative embodiment ofa computer graphics processing system in accordance with at least oneaspect of the described embodiments;

FIG. 5 is a block diagram of an illustrative embodiment of a colormanagement architecture in accordance with at least one aspect of thedescribed embodiments; and

FIG. 6 is a flow chart of an illustrative method for performing acapture operation for maintaining accurate color management inaccordance with at least one aspect of the described embodiments.

DETAILED DESCRIPTION OF ILLUSTRATIVE EMBODIMENTS

In the following description of various illustrative embodiments,reference is made to the accompanying drawings, which form a parthereof, and in which is shown by way of illustration variousembodiments. It is to be understood that other embodiments may beutilized and structural and functional modifications may be made withoutdeparting from the scope of the claimed subject matter.

FIG. 1 shows a block diagram of a color management solution 100. FIG. 1shows a host computer 110 that includes a multimedia application 120.The host computer 110 is coupled to a digital camera 130 and printer140. Input color object data from the digital camera 130 is processedthrough the multimedia application 120 and outputted to a printer 140.Under the color management solution 100, a user of the system, such as aphotographer, can take a picture of an object with the digital camera130 and print out an image of the picture on a printer 140. However,under the color management solution 100, the photographer cannot tell ifeither the multimedia application 120 or the printer 140 performed anycolor management or if both performed color management.

FIG. 2 is a schematic diagram of a computer graphics processing system201 coupled to various devices. As shown in FIG. 2, the computergraphics processing system 201 includes a graphics engine 214responsible for controlling and performing various computer graphics andcolor operations. Graphics library 212 includes numerous matrix-basedand look-up table (LUT)-based data files. Graphics library 212 may beincluded within applications 230 or separately defined as shown in FIG.2. Graphics library 212 may include application programming interfaces(APIs) for interacting with various components and/or vendor products.The computer graphics processing system 201 further includes a memory orstorage space 216 and a profiles component 218. Profiles component 218is essentially a LUT, with one set of entries corresponding to devicecontrol signal values and another set of entries that correspond to theactual colors that the control signals produce.

Profiles component 218 of a computer graphics processing system 201 isbroken down into different classes, such as input profiles (describingscanners and digital cameras), display profiles (describing monitors andLCD displays), and output profiles (describing printers and presses).Profiles 218 generally contain information regarding three variablesthat describe how a device, such as printer 255, is operating. Thesevalues include the gamut of the device, the dynamic range of the device,and the tone-reproduction characteristics of the device. Other profiles218 include information regarding instructions for handling out-of-gamutcolors, more detailed tone-reproduction information, or other devicespecific information.

Interface 220 is a user interface that permits a user of the computergraphics processing system 201 to input color management inputparameters to be performed and/or executed. Applications 230 may includeAPIs. Applications 230 are the platform in which various colormanagement variables are handled. Applications 230 have settings andfunctions that allow a user to specify source and destination profilesand to perform conversions or, in the alternative, to defer conversionuntil at the destination device, e.g., printer 255. As shown,applications 230 operate with various graphics interface APIs 282, 284,286, and 288. Graphics interface APIs 282-288 may include variousmultimedia APIs, product specific APIs, and/or vendor specific APIs.Applications 230 of a computer graphics processing system 201 allows anygraphics interface API 282-288 to access hardware elements allowing foreach to color manage images and/or objects per specific parameters foreach that are not known by the other APIs. Under the computer graphicsprocessing system 201, one graphics interface API 282 performs colormanagement solutions completely independent of another graphicsinterface API 284, 286, or 288.

By way of example only, computer graphics processing system 201 includesthree device drivers, a digital camera device driver 240, a printerdevice driver 250, and a display device driver 260. Each device driveris coupled to applications 230. Each device driver is specific to eachdevice and allows for operation and compatibility between a device,e.g., display 265, and the computer graphics processing system 201.Coupled to each device driver is a corresponding device, digital camera245 is coupled to digital camera device driver 240, printer 255 iscoupled to printer device driver 250, and display 265 is coupled todisplay device driver 260.

Under the computer graphics processing system 201, any graphicsinterface API 282-288 can access hardware in order to perform and/orimplement specific color management solutions, e.g., procedures,policies, and/or protocols. There is no coordination between thedifferent graphics interface APIs 282-288. Therefore, a piece of data tobe color managed may be color managed a multiple number of times or notat all without allowing a user to know what color management has beendone, where was the color management performed, and/or who actuallyperformed the color management.

FIG. 3 illustrates an example of a suitable computing system environment300 on which the described embodiments may be implemented. The computingsystem environment 300 is only one example of a suitable computingenvironment and is not intended to suggest any limitation as to thescope of use or functionality of the described embodiments. Neithershould the computing environment 300 be interpreted as having anydependency or requirement relating to any one or combination ofcomponents illustrated in the exemplary operating environment 300.

The described embodiments are operational with numerous other generalpurpose or special purpose computing system environments orconfigurations. Examples of well known computing systems, environments,and/or configurations that may be suitable for use with the describedembodiments include, but are not limited to, personal computers, servercomputers, hand-held or laptop devices, multiprocessor systems,microprocessor-based systems, set top boxes, programmable consumerelectronics, network PCs, minicomputers, mainframe computers,distributed computing environments that include any of the above systemsor devices, and the like.

The described embodiments may be described in the general context ofcomputer-executable instructions, such as program modules, beingexecuted by a computer. Generally, program modules include routines,programs, objects, components, data structures, etc. that performparticular tasks or implement particular abstract data types. Thedescribed embodiments may also be practiced in distributed computingenvironments where tasks are performed by remote processing devices thatare linked through a communications network. In a distributed computingenvironment, program modules may be located in both local and remotecomputer storage media including memory storage devices.

With reference to FIG. 3, an exemplary system for implementing thedescribed embodiments includes a general-purpose computing device in theform of a computer 310. Components of computer 310 may include, but arenot limited to, a processing unit 320, a system memory 330, and a systembus 321 that couples various system components including the systemmemory to the processing unit 320. The system bus 321 may be any ofseveral types of bus structures including a memory bus or memorycontroller, a peripheral bus, and a local bus using any of a variety ofbus architectures. By way of example, and not limitation, sucharchitectures include Industry Standard Architecture (ISA) bus, MicroChannel Architecture (MCA) bus, Enhanced ISA (EISA) bus, VideoElectronics Standards Association (VESA) local bus, and PeripheralComponent Interconnect (PCI) bus also known as Mezzanine bus.

Computer 310 typically includes a variety of computer readable media.Computer readable media can be any available media that can be accessedby computer 310 and includes both volatile and nonvolatile media,removable and non-removable media. By way of example, and notlimitation, computer readable media may comprise computer storage mediaand communication media. Computer storage media includes volatile andnonvolatile, removable and non-removable media implemented in any methodor technology for storage of information such as computer readableinstructions, data structures, program modules or other data. Computerstorage media includes, but is not limited to, random access memory(RAM), read only memory (ROM), electronically erasable programmable readonly memory (EEPROM), flash memory or other memory technology, CD-ROM,digital versatile disks (DVD) or other optical disk storage, magneticcassettes, magnetic tape, magnetic disk storage or other magneticstorage devices, or any other medium which can be used to store thedesired information and which can accessed by computer 310.Communication media typically embodies computer readable instructions,data structures, program modules or other data in a modulated datasignal such as a carrier wave or other transport mechanism and includesany information delivery media. The term “modulated data signal” means asignal that has one or more of its characteristics set or changed insuch a manner as to encode information in the signal. By way of example,and not limitation, communication media includes wired media such as awired network or direct-wired connection, and wireless media such asacoustic, RF, infrared and other wireless media. Combinations of the anyof the above should also be included within the scope of computerreadable media.

The system memory 330 includes computer storage media in the form ofvolatile and/or nonvolatile memory such as ROM 331 and RAM 332. A basicinput/output system 333 (BIOS), containing the basic routines that helpto transfer information between elements within computer 310, such asduring start-up, is typically stored in ROM 331. RAM 332 typicallycontains data and/or program modules that are immediately accessible toand/or presently being operated on by processing unit 320. By way ofexample, and not limitation, FIG. 3 illustrates operating system 334,application programs 335, other program modules 336, and program data337.

The computer 310 may also include other removable/non-removable,volatile/nonvolatile computer storage media. By way of example only,FIG. 3 illustrates a hard disk drive 340 that reads from or writes tonon-removable, nonvolatile magnetic media, a magnetic disk drive 351that reads from or writes to a removable, nonvolatile magnetic disk 352,and an optical disk drive 355 that reads from or writes to a removable,nonvolatile optical disk 356 such as a CD ROM or other optical media.Other removable/non-removable, volatile/nonvolatile computer storagemedia that can be used in the exemplary operating environment include,but are not limited to, magnetic tape cassettes, flash memory cards,digital versatile disks, digital video tape, solid state RAM, solidstate ROM, and the like. The hard disk drive 341 is typically connectedto the system bus 321 through a non-removable memory interface such asinterface 340, and magnetic disk drive 351 and optical disk drive 355are typically connected to the system bus 321 by a removable memoryinterface, such as interface 350.

The drives and their associated computer storage media discussed aboveand illustrated in FIG. 3, provide storage of computer readableinstructions, data structures, program modules and other data for thecomputer 310. In FIG. 3, for example, hard disk drive 341 is illustratedas storing operating system 344, application programs 345, other programmodules 346, and program data 347. Note that these components can eitherbe the same as or different from operating system 334, applicationprograms 335, other program modules 336, and program data 337. Operatingsystem 344, application programs 345, other program modules 346, andprogram data 347 are given different numbers here to illustrate that, ata minimum, they are different copies. A user may enter commands andinformation into the computer 310 through input devices such as adigital camera 363, a keyboard 362, and pointing device 361, commonlyreferred to as a mouse, trackball or touch pad. Other input devices (notshown) may include a microphone, joystick, game pad, satellite dish,scanner, or the like. These and other input devices are often connectedto the processing unit 320 through a user input interface 360 that iscoupled to the system bus, but may be connected by other interface andbus structures, such as a parallel port, game port or a universal serialbus (USB). A monitor 391 or other type of display device is alsoconnected to the system bus 321 via an interface, such as a videointerface 390. In addition to the monitor, computers may also includeother peripheral output devices such as speakers 397 and printer 396,which may be connected through an output peripheral interface 395.

The computer 310 may operate in a networked environment using logicalconnections to one or more remote computers, such as a remote computer380. The remote computer 380 may be a personal computer, a server, arouter, a network PC, a peer device or other common network node, andtypically includes many or all of the elements described above relativeto the computer 310, although only a memory storage device 381 has beenillustrated in FIG. 3. The logical connections depicted in FIG. 3include a local area network (LAN) 371 and a wide area network (WAN)373, but may also include other networks. Such networking environmentsare commonplace in offices, enterprise-wide computer networks, intranetsand the Internet.

When used in a LAN networking environment, the computer 310 is connectedto the LAN 371 through a network interface or adapter 370. When used ina WAN networking environment, the computer 310 typically includes amodem 372 or other means for establishing communications over the WAN373, such as the Internet. The modem 372, which may be internal orexternal, may be connected to the system bus 321 via the user inputinterface 360, or other appropriate mechanism. In a networkedenvironment, program modules depicted relative to the computer 310, orportions thereof, may be stored in the remote memory storage device. Byway of example, and not limitation, FIG. 3 illustrates remoteapplication programs 385 as residing on memory device 381. It will beappreciated that the network connections shown are exemplary and othermeans of establishing a communications link between the computers may beused.

It will be appreciated that the network connections shown are exemplaryand other means of establishing a communications link between thecomputers can be used. The existence of any of various well-knownprotocols such as TCP/IP, Ethernet, FTP, HTTP and the like is presumed,and the system can be operated in a client-server configuration topermit a user to retrieve web pages from a web-based server. Any ofvarious conventional web browsers can be used to display and manipulatedata on web pages.

Referring to FIG. 4, a schematic diagram of a computer graphicsprocessing system 401 in accordance with at least one aspect of thedescribed embodiments is shown. Computer graphics processing system 401is shown coupled to a digital camera 245, printer 255, and display 265through corresponding device drivers 240, 250, and 260 respectively.Computer graphics processing system 401 is also shown to include aninterface 220, allowing a user of the computer graphics processingsystem 401 to input color management input parameters to be performedand/or executed.

In accordance with at least one aspect of the described embodiments,computer graphics processing system 401 includes a graphics engine 414,a graphics library 412, a memory or storage space 416, a profilescomponent 418, and applications 430. Graphics engine 414 may be part ofan operating system of the host computer. For example, the graphicsengine 414 may be part of the Graphics Device Interface Plus® (GDI+)library of the Windows® XP Operating System by Microsoft® Corporation.Alternatively, the graphics engine 414 may be part of a separatecomputer software application, such as one of the various softwareproducts for editing and printing photographic pictures captured bydigital cameras. Graphics library 412 and/or graphics engine 414 mayinclude a converter to allow for conversion of an image/object data toan unbounded intermediate color space, such as scRGB. Defined in IEC61966-2-2, the scRGB color space is designed to fill in the gaps betweenthe color management provided by ICC profiles and the capabilities ofsRGB. Graphics engine 414 may take a set of drawing primitives, such asvector graphics, still images, text glyphs, and video, and renders themto a software or hardware graphics surface. Graphics library 414 mayinclude a collection of functionality that includes a graphics enginewith the capability to create, manipulate, and manage graphicsprimitives.

Applications 430 allow for robust color management by permitting a userto monitor, inspect, interrogate, correct, modify, and/or ignore, acolor management workflow. By use of choke points 435, applications 430assure a user of what color management has been or will be preformed,when color management was or will be performed, and by whom colormanagement has, will, or should be performed. A choke point is definedas a predefined contact point for a certain operation where all pixelsof color object data are sent through one point. A system may employ alimited set of choke points instead of a single choke point such thatpixels for color object data are sent through one of the set of chokepoints. Each pixels proceeds through one and only one choke point in theworkflow, but different pixels may go through different choke points.

Under one embodiment, there are seven (7) specific operations: printoperations, display operations, capture operations, load operations,save operations, copy operations, and paste operations. Each operationhas an associated API that will operate to facilitate the coordinationof pixels through one point of contact, the choke point. As such, colormanagement of color object data can be coordinated for any application.For each specific operation defined, corresponding operations for legacyequipment that cannot operate with the specific APIs allow forimplementation with legacy equipment. Further description of chokepoints is given below.

As shown, applications 430 operate with various graphics interface APIs282, 284, 286, and 288. As will be described more fully below, eachgraphics interface API 282-288 operates through a choke point 435.Because of these choke points 435, a user can determine whether toassign particular policies for color management by graphicalapplication, by user, by device, and/or by operation. A policy looks forthe implicit profile associated with or the explicitly embedded profilewithin the imported color object data and compares the profile (or lackof profile) with the current working space to make color managementdecisions. Further, a user can monitor color management to determinewhen and where changes occur and/or whether to implement additionalcolor management in a workflow at a specific time, not just at adestination device, e.g., late-binding, or once upon entry to aplatform, e.g., early-binding.

Referring now to FIG. 5, a block diagram of an illustrative embodimentof a color management architecture is shown in accordance with at leastone aspect of the described embodiments. The color managementarchitecture illustrated in FIG. 5 includes a computer graphicsprocessing system 501. Computer graphics processing system 501 includeschoke points 520, a hybrid workflow generator 530, a converter 540, anda color management system 550. For the example shown in FIG. 5, adestination device 560, such as a printer, is coupled to the computergraphics processing system 501.

Each operation 510-519 has a specific API associated with it that willoperate to facilitate the coordination of pixels through one point ofcontact, the choke point. As such, color management of color object datacan be coordinated for any application. For each specific operationdefined, corresponding operations 511, 513, 515, 517, and 519 for legacyequipment that cannot directly operate with the specific APIs allow forimplementation with legacy equipment. Legacy equipment have a small setof potential options. The APIs described above can be used to facilitatethe coordinate of the pixels in such a manner to be optimally colormanaged for the legacy device according to the UI policy chosen by theuser. Specifically, print operation 510 and legacy print operation 511relate to actions taken to print color object data. Display operation512 and legacy display operation 514 relate to actions taken to displaycolor object data. Capture operation 514 and legacy capture operation515 relate to actions taken to capture, e.g., by a digital camera, colorobject data. Load operation 516 and legacy load operation 517 relate toactions taken to load, e.g., from a storage space, color object data.Save operation 518 and legacy save operation 519 relate to actions takento save, e.g., to a storage device, color object data.

Operations 510-519 are coupled through respective choke points 520. AnAPI is initiated for the respective operation to interface with thecomputer graphics processing system 501. Upon entry at choke points 520,the computer graphics processing system 501 can determine whether todefer conversion of the color object data to the destination device 560or perform the conversion at the application end, e.g., within thecomputer graphics processing system 501. Should the computer graphicsprocessing system 501 determine that conversion is deferred, hybridworkflow generator 530 generates a hybrid workflow in order to defercolor conversion until rendering time at the destination device 560.Alternatively, should the computer graphics processing system 501determine to perform the conversion at the application end, converter540 converts the color object data to an intermediate color space, suchas scRGB. Performance of the conversion process is optimized because theconversion is happening at specification time and not rendering time.

After color object data is converted to an intermediate color space,such as an unbounded intermediate color space, color management system550 can mix management input from standard color spaces, ICC profiles,and non-ICC profiles into the intermediate color space. The colormanagement system 550 can operate in response to user specific inputs,application programming, and/or policies that have been previouslyestablished. User specific inputs include initiating a specificaddition, augmentation, correction, modification, etc. to the capturedimage data and/or merely monitor or inspect the color management actionsthat have previously been or will further be performed. An applicationprogram may be a specific color management operation that a user hasestablished for a program, such as Photoshop®, from Adobe Systems Inc.of San Jose, Calif., and/or a default color management solution for aparticular application.

A policy system allows a user to define and coordinate color managementacross multiple devices, operations, and users. Policies may be basedupon a particular user currently utilizing the computer graphicsprocessing system 501, a particular operation performed, such as acapture operation or legacy print operation, a particular type ofdevice, such as a digital camera or a scanner, a particular device of aparticular vendor, a particular model of the device, and even aparticular calibration setting on the model. Color management system 550includes the ability to implement color management based upon some othercriterion and/or a default criterion.

Color management system 550, operating upon an intermediate color spacethrough a choke point, allows the user to determine what colormanagement has already taken place, if any, on color object data.Further, color management system 550 allows a user to monitor where theconverted color object data is going and the color management solutionsthat are to be implemented by the destination device 560. Through thecomputer graphics processing system 501, a user can investigate, manage,monitor, intervene, correct, or otherwise manipulate or control colorobject data anywhere within the processing process. The ability tomonitor, manage, investigate, intervene, correct, or otherwisemanipulate or control color object data anywhere within the processingprocess may be done through the user interface policy.

Destination device 560 includes a hardware card 565. Hardware card 565,whether included in a printer or some other destination device 560,provides for dynamic color gamut mapping. Hardware card 565 isconfigured to accommodate changing color conversions initiated by auser, by an application program, or by a policy. Hardware card 565 isconfigured to operate with the intermediate color space and colormanagement system 550 within the computer graphics processing system501. Alternatively, hardware card 565 may be embedded into a displayitself as opposed to a graphics card in a computer.

FIG. 6 shows a flowchart illustrating the steps to perform a captureoperation for maintaining accurate color management according to anexemplary implementation of the described embodiments, which can operatein conjunction with the computer graphics processing system 401described in FIG. 4. At step 605, an image is captured by a digitalcamera and stored in some internal memory. At step 610, the image dataenters an application platform at a capture choke point. All pixels ofthe image data must pass through the choke point, thereby allowing forenhanced color management. At step 615, a determination is made as towhether an optional hybrid workflow should be created to defer colorconversion until rendering time. Such an optional step 620 allows a userto delays the performance intensive color conversion from source todestination device until a later time.

If no hybrid workflow is to be created, at step 625, color conversiontakes place to an unbounded intermediate color space, such as scRGB. Atstep 630, a determination is made as to whether any type of userintervention has been initiated. Should the user decide to implementcolor management, at step 635 the user, through interface 220, may colormanage the converted image data in any of a number of manners, includinginitiating a specific addition, augmentation, correction, modification,etc. to the captured image data and/or merely monitor or inspect thecolor management actions that have previously been or will further beperformed.

At step 640, a determination is made as to whether an applicationprogram or policy is in effect for the captured image data. If anapplication program or policy is in effect, at step 645, colormanagement is implemented based upon the application program or policy.As described above, policies may be based upon a particular user, aparticular operation performed, a particular type of device, such as acamera or a scanner, a particular device of a particular vendor, aparticular model of the device, and even a particular calibrationsetting on the model. If an application program or policy is not ineffect, at step 650, color management is implemented based upon someother criterion and/or a default criterion.

It should be understood by those skilled in the art that multiple typesof color management may be implemented in accordance with the describedembodiments. Color management based upon user intervention may bepreceded by, accompanied by, or followed by color management based onpolicies that have been established. Further, color management mayinclude no performance at all. In addition, it should be understood bythose skilled in the art that the exemplary illustration as shown anddescribed in FIG. 6 may be adapted for other operations, such asdisplay, print, load, and save.

While illustrative systems and methods as described herein embodyingvarious aspects of the described embodiments are shown, it will beunderstood by those skilled in the art, that the claimed subject matteris not limited to these embodiments. Modifications may be made by thoseskilled in the art, particularly in light of the foregoing teachings.For example, each of the elements of the aforementioned embodiments maybe utilized alone or in combination or subcombination with elements ofthe other embodiments. It will also be appreciated and understood thatmodifications may be made without departing from the true spirit andscope of the claimed subject matter. The description is thus to beregarded as illustrative instead of restrictive on the describedembodiments.

1. A computer graphics processing system comprising: a plurality ofapplication programming interfaces; and a plurality of choke points,individual choke points corresponding to an operation; wherein at leastone of the plurality of application programming interfaces is configuredto determine where in a workflow to perform conversion of a color objectobtained from a device and to direct an operation of one of theplurality of choke points, and wherein individual choke points areindependent of a device driver configured to be coupled to the device.2. The computer graphics processing system of claim 1, furthercomprising a hybrid workflow generator configured to defer conversion ofthe color object to a destination device.
 3. The computer graphicsprocessing system of claim 1, further comprising a converter configuredto convert the color object to an intermediate color space.
 4. Thecomputer graphics processing system of claim 1, further comprising acolor management system configured to one or both of: intervene in theworkflow; or mix color management input.
 5. The computer graphicsprocessing system of claim 4, wherein the color management input is fromat least one of: a standard color space, an ICC profile, or a non-ICCprofile.
 6. The computer graphics processing system of claim 4, whereinthe color management system is configured to operate in response to atleast one of: a user request, an application program, or a policy. 7.The computer graphics processing system of claim 1, further comprisingone or more hardware components configured to allow for dynamic colorgamut mapping.
 8. A method comprising: providing a plurality of chokepoints, individual choke points corresponding to an operation; andutilizing one or more application programming interfaces to determinewhere in a workflow to perform conversion of a color object obtainedfrom a device and to direct an operation of one of the plurality ofchoke points, wherein individual choke points are independent of adevice driver coupled to the device.
 9. The method of claim 8, furthercomprising deferring conversion of the color object to a destinationdevice.
 10. The method of claim 8, further comprising converting thecolor object to an intermediate color space.
 11. The method of claim 8,further comprising one or both of: intervening in the workflow or mixingcolor management input.
 12. The method of claim 11, wherein the input isfrom at least one of: a standard color space, an ICC profile, or anon-ICC profile.
 13. The method of claim 11, wherein one or both ofintervening or mixing are performed in response to at least one of: auser request, an application program, or a policy.
 14. The method ofclaim 8, further comprising performing dynamic color gamut mapping inone or more hardware components.
 15. One or more computer-readablestorage media embodying computer-readable instructions which, whenexecuted, implement a method comprising: providing a plurality of chokepoints, individual choke points corresponding to an operation; andutilizing one or more application programming interfaces to determinewhere in a workflow to perform conversion of a color object obtainedfrom a device and to direct an operation of one of the plurality ofchoke points, wherein individual choke points are independent of adevice driver coupled to the device.
 16. The one or morecomputer-readable storage media of claim 15, further comprising one orboth of: deferring conversion of the color object to a destinationdevice; or converting the color object to an intermediate color space.17. The one or more computer-readable storage media of claim 15, furthercomprising one or both of: intervening in the workflow or mixing colormanagement input.
 18. The one or more computer-readable storage media ofclaim 17, wherein the input is from at least one of: a standard colorspace, an ICC profile, or a non-ICC profile.
 19. The one or morecomputer-readable storage media of claim 17, wherein one or both ofintervening or mixing are performed in response to at least one of: auser request, an application program, or a policy.
 20. The one or morecomputer-readable storage media of claim 15, further comprisingperforming dynamic color gamut mapping in one or more hardwarecomponents.